feat(quotes): allow a per-transaction platform fee override on POST /quotes - #797
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub. 2 Skipped Deployments
|
|
Preview deployment for your docs. Learn more about Mintlify Previews.
|
✱ Stainless preview builds for gridThis PR will update the cli go kotlin openapi php python ruby typescript ✅ grid-ruby studio · code
|
Greptile SummaryThe PR adds an optional per-transaction platform fee override to quote creation and regenerates both committed OpenAPI bundles.
Confidence Score: 4/5The agent-facing fee-control exposure should be resolved before merging because the shared request schema bypasses the intended platform-only contract boundary. POST /agents/me/quotes consumes the modified QuoteRequest, so agents with only CREATE_QUOTES are now advertised as able to select platform fees even though the permission model provides no corresponding fee-control authority. Files Needing Attention: openapi/components/schemas/quotes/QuoteRequest.yaml
|
| Filename | Overview |
|---|---|
| openapi/components/schemas/quotes/QuoteRequest.yaml | Adds the fee override to a request shared by platform and agent quote endpoints, unintentionally broadening the advertised capability. |
| openapi/components/schemas/quotes/PlatformFeeOverride.yaml | Defines the required fixed and variable fee override fields consistently with the stated optional request feature. |
| openapi.yaml | Correctly bundles the new schema but consequently exposes it on every endpoint using QuoteRequest, including agent quote creation. |
| mintlify/openapi.yaml | Mirrors the generated root bundle and publishes the same over-broad agent request contract. |
Flowchart
%%{init: {'theme': 'neutral'}}%%
flowchart LR
P[Platform caller<br/>BasicAuth] --> PQ[POST /quotes]
A[Agent caller<br/>CREATE_QUOTES] --> AQ[POST /agents/me/quotes]
PQ --> QR[Shared QuoteRequest]
AQ --> QR
QR --> F[platformFeeOverride]
F --> C[Platform fee calculation]
Prompt To Fix All With AI
### Issue 1
openapi/components/schemas/quotes/QuoteRequest.yaml:70-71
**Agent fee authority is unguarded**
When an agent with `CREATE_QUOTES` calls `POST /agents/me/quotes`, the shared `QuoteRequest` advertises `platformFeeOverride` even though no agent permission grants fee control, causing either unauthorized platform-fee changes when honored or a broken generated-client contract when rejected. **How this was verified:** The agent endpoint references this shared request schema, while the complete agent permission enum contains no fee-management permission.
---
For each issue above, determine whether it is valid and should be fixed. If so, fix it directly.Reviews (1): Last reviewed commit: "feat(quotes): allow a per-transaction pl..." | Re-trigger Greptile
gcamata
left a comment
There was a problem hiding this comment.
a couple minor things but otherwise looks good!
|
🦣 Congratulations @gcamata - your substantive review earned a Bear-dog! (uncommon)
View your Frost-dex: https://zeus.dev.dev.sparkinfra.net/#/dinodex/gcamata?section=ice-age |
…quotes Optional platformFeeOverride on QuoteRequest: when present it replaces all platform fees that would otherwise apply — no standing fee config required and no cap relative to one. platformFixedFee and platformVariableFeeBps are both required within the object; negatives are rejected at schema level. USD source currency only today (including same-currency USD transfers); the fixed fee currency must equal the quote's source currency (AT-6193). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Agent tokens carry no fee-control permission, so note that the field must be omitted on agent-authenticated requests like POST /agents/me/quotes. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
829c5e1 to
7a9c7e0
Compare
This stack of pull requests is managed by Graphite. Learn more about stacking. |
7a9c7e0 to
6ecfcf4
Compare
…platformVariableFeeBps at 10000 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
6ecfcf4 to
723b1ee
Compare
Merge activity
|
# Conflicts: # mintlify/openapi.yaml # openapi.yaml # openapi/components/schemas/errors/Error400.yaml

What
Adds an optional
platformFeeOverrideobject to theQuoteRequestschema (newcomponents/schemas/quotes/PlatformFeeOverride.yaml, bundles regenerated).When present, the override replaces all platform fees that would otherwise apply to the transaction:
platformFixedFee({amount, currency}) andplatformVariableFeeBpsare both required within the object; negatives rejected at schema level (minimum: 0)INVALID_INPUTotherwiseTRANSACTION_OVERRIDEis deliberately NOT added toconfig/FeeType.yaml: platforms must not create standing override configs viaPATCH /configNo response-shape changes. Optional-field addition — passes the oasdiff breaking-change check.
Why
Grid Fees Phase 2d (AT-6193, epic AT-6136): platforms need per-transaction control of their own fee (promos, VIP pricing, negotiated rates) without editing standing config.
Sparkcore implementation: lightsparkdev/webdev stack for AT-6128 / AT-6194 (vendored client regen included there).
🤖 Generated with Claude Code